package org.jeecg.modules.lab.items.task.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.jeecg.modules.lab.entrust.entity.LabEntrustSample;
import org.jeecg.modules.lab.items.entity.LabItems;
import org.jeecg.modules.lab.items.vo.*;
import org.jeecg.modules.lab.utensil.entity.MonthList;
import org.springframework.stereotype.Repository;

import javax.naming.Name;
import java.util.List;
import java.util.Map;

/**
 * @Description: 任务信息查询
 * @Author: jeecg-boot
 * @Date: 2023-07-20
 * @Version: V1.0
 */
@Repository
public interface LabTaskAllotMapper extends BaseMapper<LabTaskAllotPage> {
    /**
     * 查询所有的委托、监督等等单
     *
     * @return
     */
    List<LabTaskAllotPage> getWTaskList(@Param("entName") String entName,
                                        @Param("sampleType") String sampleType,
                                        @Param("allotStatus") String allotStatus,
                                        @Param("billStatus") String billStatus,
                                        @Param("auditId") String auditId,
                                        @Param("ratifyId") String ratifyId,
                                        @Param("userId") String userId,
                                        String handlDate,
                                        String handler);

    /**
     * 查询所有的报告单
     *
     * @param entName
     * @param sampleType
     * @param allotStatus
     * @param billStatus
     * @param auditId
     * @param ratifyId
     * @param userId
     * @return
     */
    List<LabTaskAllotPage> getWReportList(@Param("entName") String entName,
                                          @Param("sampleType") String sampleType,
                                          @Param("allotStatus") String allotStatus,
                                          @Param("billStatus") String billStatus,
                                          @Param("chiefId") String chiefId,
                                          @Param("auditId") String auditId,
                                          @Param("ratifyId") String ratifyId,
                                          @Param("userId") String userId);


    /**
     *
     * @param entName
     * @param sampleType
     * @param allotStatus
     * @param billStatus
     * @param chiefId
     * @param auditId
     * @param ratifyId
     * @param userId
     * @return
     */
    List<LabTaskAllotPage> getRecordReportList(@Param("entName") String entName,
                                          @Param("sampleType") String sampleType,
                                          @Param("allotStatus") String allotStatus,
                                          @Param("billStatus") String billStatus,
                                          @Param("chiefId") String chiefId,
                                          @Param("auditId") String auditId,
                                          @Param("ratifyId") String ratifyId,
                                          @Param("userId") String userId);


    /**
     * 查询可用实验人员
     *
     * @return
     */
    List<LabTaskUserPage> getAllotUsers(@Param("Mid") String Mid);

    /**
     * 根据人员检测项目
     *
     * @return
     */
    List<LabCheckItemsPage> getCheckItems(@Param("userId") String userId,
                                          @Param("auditId") String auditId,
                                          @Param("entrustType") String entrustType,
                                          @Param("entName") String entName,
                                          @Param("sampleType") String sampleType,
                                          @Param("sampleSort") String sampleSort,
                                          @Param("itemStatus") String itemStatus,
                                          @Param("pubDate") String pubDate);

    LabCheckItemsPage getOneItems(@Param("taskItemId") String taskItemId, @Param("entrustId") String entrustId);


    String getAllTestUsers(@Param("entrustId") String entrustId);

    String getTestDepart(@Param("entrustId") String entrustId);

    /**
     * 待检样品数量
     *
     * @param userId
     * @return
     */
    LabSamItemPage getWaitSamNum(@Param("userId") String userId);

    /**
     * 待检样品列表
     *
     * @param userId
     * @return
     */
    List<LabEntrustSample> getWaitSamList(@Param("userId") String userId);


    /**
     * 实验数据统计
     *
     * @param date
     * @return
     */
    LabSamItemPage samAndItemCount(@Param("date") String date, @Param("checkType") String checkType, @Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 每月样品数量
     *
     * @param year
     * @return
     */
    List<MonthList> samNumMonth(@Param("year") String year);

    /**
     * 每月项目数量
     *
     * @param year
     * @return
     */
    List<MonthList> itemNumMonth(@Param("year") String year);

    List<LabAdutiUserPage> getAduitUsers(@Param("tId") String tId);

    LabItemsUsersPage getUserSkill(@Param("itemId") String itemId, @Param("basisId") String basisId);

    List<LabItemsUsersPage> getUserSkillList(@Param("itemId") String itemId, @Param("basisId") String basisId, @Param("userName") String userName);
}
